Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Access Custom Control In ListView

Îåêßíçóå áðü ôï ìÝëïò Fanis. Τελευταία δημοσίευση από το μέλος Fanis στις 16-10-2009, 11:53. Υπάρχουν 3 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  15-10-2009, 17:23 54518

    Access Custom Control In ListView

    Έχω ενα Custom Control το οποίο το εισάγω μέσα σε ενα ListView.
    Για να δουλέψει σωστά το Control πρέπει απο το CodeBehind να του περάσω κάποιες τιμές.
    π.χ.
    WishListCTRL.Status = true;

    Επειδή όμως είναι μέσα σε ListView δεν μπορώ να το δώ απο το CodeBehind.
    Υπάρχει κάπιος τρόπος?


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
        <asp:ListView runat="server" ID="HotelsListLV" DataKeyNames="HotelID">
    <LayoutTemplate>
    <table runat="server" width="100%">
    <tr>
    <th width="50%" align="left">
    <asp:Label ID="HotelHeaderLBL" runat="server" Text="Hotel"></asp:Label>
    </th>
    <th width="10%" align="left">
    <asp:Label ID="RatingHeaderLBL" runat="server" Text="Rating"></asp:Label>
    </th>
    <th width="40%" align="left">
    <asp:Label runat="server" ID="RegionHeaderLBL" Text="Region"></asp:Label>
    </th>
    </tr>
    <tr id="itemPlaceholder" runat="server">
    </tr>
    </table>
    </LayoutTemplate>
    <ItemTemplate>
    <tr>
    <td width="50%">
    <asp:Label ID="HotelLBL" runat="server" Text='<%#Eval("Title") %>'></asp:Label>
    </td>
    <td width="10%">
    <asp:Label ID="RatingLBL" runat="server"><%#Eval("Rating") %> Stars</asp:Label>
    </td>
    <td width="40%">
    <asp:Label runat="server" ID="RegionLBL" Text="Test"></asp:Label>
    </td>
    <td>
    </td>
    </tr>
    <tr>
    <td>
    <ctrl:WishList ID="WishListCTRL" runat="server" OnControlClickEvent="AddToWishList_Click" />
    </td>
    </tr>
    </ItemTemplate>
    </asp:ListView>

  •  15-10-2009, 18:25 54522 σε απάντηση της 54518

    Απ: Access Custom Control In ListView

    Ένας απλός τρόπος είναι μέσα από το OnItemBind event που έχει το List control, να κάνεις Find το control σου με το όνομά του, και να του κάνεις assign το property...

     

    George J.


    George J. Capnias: Χειροπρακτικός Υπολογιστών, Ύψιστος Γκουράρχης της Κουμπουτερολογίας
    w: capnias.org, t: @gcapnias, l: gr.linkedin.com/in/gcapnias
    dotNETZone.gr News
  •  16-10-2009, 11:18 54539 σε απάντηση της 54522

    Απ: Access Custom Control In ListView

    Επαιξε έτσι, αλλα τώρα το άλλο πρόβλημα που ατνιμετωπίζω είναι το εξής.
    Μέσα στο Control του περνάω κάποιες τιμές τις οποίες πρέπει να τις πάρω στο OnClick για παράδειγμα.

    <ctrl:WishList ID="WishListCTRL" runat="server" ΗID='<%#DataBinder.Eval(Container.DataItem,"ID")%>' OnControlClickEvent="AddToWishList_Click" />

    στην Γραμμή 2 το ιδανικό θα ήταν να πάρω τις τιμές που έχω ορίσει.

    int wishListID = addToWishList.ΗID;

    αλλα δεν είναι εφικτό κάτι τέτοιο.


    Μπορώ όμως να πάρω τις τιμές απο το
    ListViewItemEventArgs, όπως γίνεται στο DatBound? (Code Snippet 2)
    .

    Πως θα μπορέσω μέσα στο control μου να περάσω αντι για EventArgs , ListViewItemEventArgs


    Code Snippet 1
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     protected void AddToWishList_Click(object sender, EventArgs e) {
    var addToWishList = (AddToWishList)sender;

    try {
    db.Open();
    IWishListDAO wishListDAO = new WishListDAO(db);
    IAgentDAO agentDAO = new AgentDAO(db);
    var AgentID = agentDAO.GetAgentIDByUserName(User.Identity.Name);

    wishListDAO.AddCityToWishList(ID,Name);

    addToWishList.Status = true;
    addToWishList.DataBind();

    } catch (Exception) {

    throw;
    } finally {
    db.Close();
    }
    }

    Code Snippet 2
    1

    3
    4
    5
    protected void HotelsListLV_ItemDataBound(object sender, ListViewItemEventArgs e) {
    AddToWishList addToWishList = (AddToWishList)e.Item.FindControl("WishListCTRL");
    addToWishList.DataBind();

    }



  •  16-10-2009, 11:53 54540 σε απάντηση της 54539

    Απ: Access Custom Control In ListView


    Ένας άλλος τρόπος που δοκίμασα είναι αυτός αλλά χάνει τις τιμές.
    Στην γραμμή 4 θα έπρεπε το addToWishList.HID να έχει τιμή.



    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    protected void AddToWishList_Click(object sender, EventArgs e) {
                 var i = sender as AddToWishList;
                 ListViewDataItem item = i.Parent as ListViewDataItem;
                 AddToWishList addToWishList = (AddToWishList)item.FindControl("WishListCTRL");
    
                 int index = item.Parent.Controls.IndexOf(item);
    
                try {
                    db.Open();
                    IWishListDAO wishListDAO = new WishListDAO(db);
                    IAgentDAO agentDAO = new AgentDAO(db);
                    var AgentID = agentDAO.GetAgentIDByUserName(User.Identity.Name);
    
                    wishListDAO.AddCityToWishList(addToWishList.HID, "addToWishList","null");
                    
                    addToWishList.Status = true;
                    addToWishList.DataBind();
    
                } catch (Exception) {
    
                    throw;
                } finally {
                    db.Close();
                }
            }

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems